var UIJQueryUI = (function () {
  var handleDatePickers = function () {
    $('#ui_date_picker').datepicker()

    $('#ui_date_picker_with_button_bar').datepicker({
      showButtonPanel: true
    })

    $('#ui_date_picker_inline').datepicker()

    $('#ui_date_picker_change_year_month').datepicker({
	      changeMonth: true,
	      changeYear: true
	    })

	    $('#ui_date_picker_multiple').datepicker({
	    	numberOfMonths: 2,
      		showButtonPanel: true
	    })

	    $('#ui_date_picker_range_from').datepicker({
	      defaultDate: '+1w',
	      changeMonth: true,
	      numberOfMonths: 2,
	      onClose: function (selectedDate) {
	        $('#ui_date_picker_range_to').datepicker('option', 'minDate', selectedDate)
	      }
	    })
	    $('#ui_date_picker_range_to').datepicker({
	      defaultDate: '+1w',
	      changeMonth: true,
	      numberOfMonths: 2,
	      onClose: function (selectedDate) {
	        $('#ui_date_picker_range_from').datepicker('option', 'maxDate', selectedDate)
	      }
	    })

	    $('#ui_date_picker_week_year').datepicker({
	      showWeek: true,
	      firstDay: 1
	    })

	    $('#ui_date_picker_trigger input').datepicker()
	    $('#ui_date_picker_trigger .add-on').click(function () {
	    	$('#ui_date_picker_trigger input').datepicker('show')
	    })
  }

  var handleDialogs = function () {
    	// basic dialog1
    	$('#dialog_basic1').dialog({
		      autoOpen: false,
		      dialogClass: 'ui-dialog-yellow',
		      show: {
		        effect: 'blind',
		        duration: 500
		      },
		      hide: {
		        effect: 'explode',
		        duration: 500
		      }
	    })

	    $('#basic_opener1').click(function () {
	      $('#dialog_basic1').dialog('open')
	      $('.ui-dialog button').blur()// avoid button autofocus
	    })

	    // basic dialog2
    	$('#dialog_basic2').dialog({
		      autoOpen: false,
		      dialogClass: 'ui-dialog-purple',
		      show: {
		        effect: 'blind',
		        duration: 500
		      },
		      hide: {
		        effect: 'explode',
		        duration: 500
		      }
	    })

	    $('#basic_opener2').click(function () {
	      $('#dialog_basic2').dialog('open')
	      $('.ui-dialog button').blur()// avoid button autofocus
	    })

	    // basic dialog3
    	$('#dialog_basic3').dialog({
		      autoOpen: false,
		      dialogClass: 'ui-dialog-grey',
		      show: {
		        effect: 'blind',
		        duration: 500
		      },
		      hide: {
		        effect: 'explode',
		        duration: 500
		      }
	    })

	    $('#basic_opener3').click(function () {
	      $('#dialog_basic3').dialog('open')
	      $('.ui-dialog button').blur()// avoid button autofocus
	    })

	    // basic dialog4
    	$('#dialog_basic4').dialog({
		      autoOpen: false,
		      dialogClass: 'ui-dialog-red',
		      show: {
		        effect: 'blind',
		        duration: 500
		      },
		      hide: {
		        effect: 'explode',
		        duration: 500
		      }
	    })

	    $('#basic_opener4').click(function () {
	      $('#dialog_basic4').dialog('open')
	      $('.ui-dialog button').blur()// avoid button autofocus
	    })

	    // info dialog
	    $('#dialog_info').dialog({
	      dialogClass: 'ui-dialog-blue',
	      autoOpen: false,
	      resizable: false,
	      height: 250,
	      modal: true,
	      buttons: [
	      	{
	      		text: 'OK',
	      		class: 'btn green',
	      		click: function () {
        			$(this).dialog('close')
      			}
	      	}
	      ]
	    })

	    $('#info_opener').click(function () {
	      $('#dialog_info').dialog('open')
	       $('.ui-dialog button').blur()// avoid button autofocus
	    })

	    // confirm dialog
	    $('#dialog_confirm').dialog({
	      dialogClass: 'ui-dialog-green',
	      autoOpen: false,
	      resizable: false,
	      height: 210,
	      modal: true,
	      buttons: [
	      	{
	      		class: 'btn red',
	      		text: 'Delete',
	      		click: function () {
        			$(this).dialog('close')
      			}
	      	},
	      	{
	      		class: 'btn',
	      		text: 'Cancel',
	      		click: function () {
        			$(this).dialog('close')
      			}
	      	}
	      ]
	    })

	    $('#confirm_opener').click(function () {
	      $('#dialog_confirm').dialog('open')
	       $('.ui-dialog button').blur()// avoid button autofocus
	    })
  }

  return {
    // main function to initiate the module
    init: function () {
      handleDatePickers()
      handleDialogs()
    }

  }
}())
